<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>LiteSpeed QUIC Library: include/lsquic.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">LiteSpeed QUIC Library
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">lsquic.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="lsquic_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/* Copyright (c) 2017 LiteSpeed Technologies Inc.  See LICENSE. */</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#ifndef __LSQUIC_H__</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="preprocessor">#define __LSQUIC_H__</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &lt;stdarg.h&gt;</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lsquic__types_8h.html">lsquic_types.h</a>&gt;</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#include &lt;sys/uio.h&gt;</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#include &lt;time.h&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="keyword">struct </span>iovec;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="keyword">struct </span>sockaddr;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="lsquic_8h.html#abaf1fe07c4f99aa36d3d5502bbfc371d">   29</a></span>&#160;<span class="preprocessor">#define LSENG_SERVER (1 &lt;&lt; 0)</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a8f395ac69797c7be8d9d524d464e7ed2">   34</a></span>&#160;<span class="preprocessor">#define LSENG_HTTP  (1 &lt;&lt; 1)</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#define LSENG_HTTP_SERVER (LSENG_SERVER|LSENG_HTTP)</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4db">   42</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4db">lsquic_version</a></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dba1956abef5d785f45310599e4fcd39c32">   46</a></span>&#160;    <a class="code" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dba1956abef5d785f45310599e4fcd39c32">LSQVER_035</a>,</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dba5c2aa78b22ea462ae839566e19a87ea7">   54</a></span>&#160;    <a class="code" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dba5c2aa78b22ea462ae839566e19a87ea7">LSQVER_037</a>,</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dba2d39809298e0c7866b21fc7932504966">   60</a></span>&#160;    <a class="code" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dba2d39809298e0c7866b21fc7932504966">LSQVER_038</a>,</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dbaa9b8bed8ca169e8a3762308cbf0f3af3">   67</a></span>&#160;    <a class="code" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dbaa9b8bed8ca169e8a3762308cbf0f3af3">LSQVER_039</a>,</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dbac673a00564784af03b3b9cb747ed8af3">   72</a></span>&#160;    <a class="code" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dbac673a00564784af03b3b9cb747ed8af3">LSQVER_041</a>,</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    N_LSQVER</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;};</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a0420e68d347462080cf2e583b77d61a0">   81</a></span>&#160;<span class="preprocessor">#define LSQUIC_SUPPORTED_VERSIONS ((1 &lt;&lt; LSQVER_035) | (1 &lt;&lt; LSQVER_037) | \</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="preprocessor">                    (1 &lt;&lt; LSQVER_038) | (1 &lt;&lt; LSQVER_039) | (1 &lt;&lt; LSQVER_041))</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<span class="preprocessor">#define LSQUIC_EXPERIMENTAL_VERSIONS ((1 &lt;&lt; LSQVER_041))</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="structlsquic__stream__if.html">   92</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structlsquic__stream__if.html">lsquic_stream_if</a> {</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="structlsquic__stream__if.html#a1eb8c7575d67c7b1c75c472288751adb">   98</a></span>&#160;    <a class="code" href="lsquic__types_8h.html#a21c289bcbb4643effba8bb75eeffd8cd">lsquic_conn_ctx_t</a> *(*on_new_conn)(<span class="keywordtype">void</span> *stream_if_ctx,</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;                                                        <a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c);</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="structlsquic__stream__if.html#afdab3bce65931517452d2ddd979596d7">  104</a></span>&#160;    void (*<a class="code" href="structlsquic__stream__if.html#afdab3bce65931517452d2ddd979596d7">on_goaway_received</a>)(<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c);</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    void (*on_conn_closed)(<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c);</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <a class="code" href="lsquic__types_8h.html#a4012fdeb11382d691dfe5f025206b8f3">lsquic_stream_ctx_t</a> *</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="structlsquic__stream__if.html#aa9c28eae8f3bd33d028578e0aef24402">  115</a></span>&#160;         (*on_new_stream)(<span class="keywordtype">void</span> *stream_if_ctx, <a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s);</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    void (*on_read)     (<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <a class="code" href="lsquic__types_8h.html#a4012fdeb11382d691dfe5f025206b8f3">lsquic_stream_ctx_t</a> *h);</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    void (*on_write)    (<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <a class="code" href="lsquic__types_8h.html#a4012fdeb11382d691dfe5f025206b8f3">lsquic_stream_ctx_t</a> *h);</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    void (*on_close)    (<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <a class="code" href="lsquic__types_8h.html#a4012fdeb11382d691dfe5f025206b8f3">lsquic_stream_ctx_t</a> *h);</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;};</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a6fd9104d1ffa8c391dede0a714a5919b">  127</a></span>&#160;<span class="preprocessor">#define      LSQUIC_MIN_FCW             (16 * 1024)</span></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;<span class="comment">/* Each LSQUIC_DF_* value corresponds to es_* entry in</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="comment"> * lsquic_engine_settings below.</span></div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="lsquic_8h.html#aecb8427433af4e3fa5260fe71c313d8f">  136</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_VERSIONS         (LSQUIC_SUPPORTED_VERSIONS &amp; \</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="preprocessor">                                            ~LSQUIC_EXPERIMENTAL_VERSIONS)</span></div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="preprocessor">#define LSQUIC_DF_CFCW_SERVER      (3 * 1024 * 1024 / 2)</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;<span class="preprocessor">#define LSQUIC_DF_CFCW_CLIENT      (15 * 1024 * 1024)</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<span class="preprocessor">#define LSQUIC_DF_SFCW_SERVER      (1 * 1024 * 1024)</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;<span class="preprocessor">#define LSQUIC_DF_SFCW_CLIENT      (6 * 1024 * 1024)</span></div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;<span class="preprocessor">#define LSQUIC_DF_MAX_STREAMS_IN   100</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a1e7808ab9863e1ae4b44e7856e75eee8">  148</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_HANDSHAKE_TO     (10 * 1000 * 1000)</span></div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="preprocessor">#define LSQUIC_DF_IDLE_CONN_TO     (30 * 1000 * 1000)</span></div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="preprocessor">#define LSQUIC_DF_SILENT_CLOSE     1</span></div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a1e1ab46b8acff52f127359bf68a8b297">  157</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_MAX_HEADER_LIST_SIZE 0</span></div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="lsquic_8h.html#aeefb2f925217c311af00c92a77e0f191">  160</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_UA               &quot;LSQUIC&quot;</span></div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;<span class="preprocessor">#define LSQUIC_DF_STTL               86400</span></div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="preprocessor">#define LSQUIC_DF_MAX_INCHOATE     (1 * 1000 * 1000)</span></div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="preprocessor">#define LSQUIC_DF_SUPPORT_SREJ_SERVER  1</span></div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="preprocessor">#define LSQUIC_DF_SUPPORT_SREJ_CLIENT  0       </span><span class="comment">/* TODO: client support */</span><span class="preprocessor"></span></div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a9e3f5f4a0ecb53f96d2b9249cded3aef">  167</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_SUPPORT_NSTP     0</span></div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;<span class="preprocessor">#define LSQUIC_DF_SUPPORT_PUSH         1</span></div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="preprocessor">#define LSQUIC_DF_SUPPORT_TCID0    1</span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a13d1cb05ad19ae5cd016e016d228326c">  171</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_HONOR_PRST       0</span></div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="lsquic_8h.html#afc995b576f8013a43436201a7adf0221">  174</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_PROGRESS_CHECK    1000</span></div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a472d9508529e22b2be78b48d0fd69529">  177</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_PENDRW_CHECK      10</span></div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a5665ba68a62be14aa1332316512ec4fe">  180</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_RW_ONCE           0</span></div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a4a8cbc259dcff01fa93959ca5b2a0a35">  183</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_PROC_TIME_THRESH  0</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a332b2fcfbbd83bbeb6027a622ec72f69">  186</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_PACE_PACKETS      1</span></div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html">  188</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structlsquic__engine__settings.html">lsquic_engine_settings</a> {</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a9dca1ee29ab43ca9454b6b0a8d5e2799">  197</a></span>&#160;    <span class="keywordtype">unsigned</span>        <a class="code" href="structlsquic__engine__settings.html#a9dca1ee29ab43ca9454b6b0a8d5e2799">es_versions</a>;</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a2931ff6b1bc06429379debcc2c5cc5fa">  209</a></span>&#160;    <span class="keywordtype">unsigned</span>        <a class="code" href="structlsquic__engine__settings.html#a2931ff6b1bc06429379debcc2c5cc5fa">es_cfcw</a>;</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#ac88c5a68eac5f324a1b1524a962be26d">  221</a></span>&#160;    <span class="keywordtype">unsigned</span>        <a class="code" href="structlsquic__engine__settings.html#ac88c5a68eac5f324a1b1524a962be26d">es_sfcw</a>;</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a7297980e558cd2deafb955534520934b">  231</a></span>&#160;    <span class="keywordtype">unsigned</span>        <a class="code" href="structlsquic__engine__settings.html#a7297980e558cd2deafb955534520934b">es_max_cfcw</a>;</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    <span class="keywordtype">unsigned</span>        es_max_sfcw;</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#ab6848de0e8025b08398ba43445de7405">  236</a></span>&#160;    <span class="keywordtype">unsigned</span>        <a class="code" href="structlsquic__engine__settings.html#ab6848de0e8025b08398ba43445de7405">es_max_streams_in</a>;</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#aeaef9bb4ecadb340cd05cfb85a6901a5">  245</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>   <a class="code" href="structlsquic__engine__settings.html#aeaef9bb4ecadb340cd05cfb85a6901a5">es_handshake_to</a>;</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a4ba2bd3e85b8b4d0d929e31d675554e2">  248</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>   <a class="code" href="structlsquic__engine__settings.html#a4ba2bd3e85b8b4d0d929e31d675554e2">es_idle_conn_to</a>;</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#aebf95d077a1a0de005b2ddac5afdfdc4">  251</a></span>&#160;    <span class="keywordtype">int</span>             <a class="code" href="structlsquic__engine__settings.html#aebf95d077a1a0de005b2ddac5afdfdc4">es_silent_close</a>;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#ab7b7eb8ab17eb47b8ea69d8ee8ef4a5b">  258</a></span>&#160;    <span class="keywordtype">unsigned</span>        <a class="code" href="structlsquic__engine__settings.html#ab7b7eb8ab17eb47b8ea69d8ee8ef4a5b">es_max_header_list_size</a>;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a578718dc886cffa23e97fa11fb26138b">  261</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>     *<a class="code" href="structlsquic__engine__settings.html#a578718dc886cffa23e97fa11fb26138b">es_ua</a>;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    uint32_t        es_pdmd; <span class="comment">/* One fixed value X509 */</span></div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;    uint32_t        es_aead; <span class="comment">/* One fixed value AESG */</span></div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    uint32_t        es_kexs; <span class="comment">/* One fixed value C255 */</span></div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#adfd0c61d3243d85d3676876ca67e6466">  272</a></span>&#160;    <span class="keywordtype">int</span>             <a class="code" href="structlsquic__engine__settings.html#adfd0c61d3243d85d3676876ca67e6466">es_support_srej</a>;</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a8b68eb068b40eb24e5e08cab097f077a">  284</a></span>&#160;    <span class="keywordtype">int</span>             <a class="code" href="structlsquic__engine__settings.html#a8b68eb068b40eb24e5e08cab097f077a">es_support_push</a>;</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a1570dc65c3b4d097987f08ade3cfd993">  293</a></span>&#160;    <span class="keywordtype">int</span>             <a class="code" href="structlsquic__engine__settings.html#a1570dc65c3b4d097987f08ade3cfd993">es_support_tcid0</a>;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#addfa7e19884a81f50ca4d573b9aa16a3">  305</a></span>&#160;    <span class="keywordtype">int</span>             <a class="code" href="structlsquic__engine__settings.html#addfa7e19884a81f50ca4d573b9aa16a3">es_support_nstp</a>;</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#ac5a3d759dcdf8915a98cbc3dd56d5f22">  312</a></span>&#160;    <span class="keywordtype">int</span>             <a class="code" href="structlsquic__engine__settings.html#ac5a3d759dcdf8915a98cbc3dd56d5f22">es_honor_prst</a>;</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a85a83ab74a018c293f83d9b78a797d8e">  327</a></span>&#160;    <span class="keywordtype">unsigned</span>        <a class="code" href="structlsquic__engine__settings.html#a85a83ab74a018c293f83d9b78a797d8e">es_progress_check</a>;</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;</div><div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a9baca38fb49c0028941a54de17a3580a">  344</a></span>&#160;    <span class="keywordtype">unsigned</span>        <a class="code" href="structlsquic__engine__settings.html#a9baca38fb49c0028941a54de17a3580a">es_pendrw_check</a>;</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a59907a4c1080bd6eb5c5c7776b968af4">  358</a></span>&#160;    <span class="keywordtype">int</span>             <a class="code" href="structlsquic__engine__settings.html#a59907a4c1080bd6eb5c5c7776b968af4">es_rw_once</a>;</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#aaa9758b94c763b457c4a6ccc4f1e8100">  378</a></span>&#160;    <span class="keywordtype">unsigned</span>        <a class="code" href="structlsquic__engine__settings.html#aaa9758b94c763b457c4a6ccc4f1e8100">es_proc_time_thresh</a>;</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a90403ce7cbb10f9ddf438cfc1bd62530">  385</a></span>&#160;    <span class="keywordtype">int</span>             <a class="code" href="structlsquic__engine__settings.html#a90403ce7cbb10f9ddf438cfc1bd62530">es_pace_packets</a>;</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;};</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;<span class="comment">/* Initialize `settings&#39; to default values */</span></div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;lsquic_engine_init_settings (<span class="keyword">struct</span> <a class="code" href="structlsquic__engine__settings.html">lsquic_engine_settings</a> *,</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;                             <span class="keywordtype">unsigned</span> lsquic_engine_flags);</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;<a class="code" href="lsquic_8h.html#a827d6567e492bd67c330e2d48047ad49">lsquic_engine_check_settings</a> (<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlsquic__engine__settings.html">lsquic_engine_settings</a> *settings,</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;                              <span class="keywordtype">unsigned</span> lsquic_engine_flags,</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;                              <span class="keywordtype">char</span> *err_buf, <span class="keywordtype">size_t</span> err_buf_sz);</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="structlsquic__out__spec.html">  415</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structlsquic__out__spec.html">lsquic_out_spec</a></div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;{</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>   *buf;</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    <span class="keywordtype">size_t</span>                 sz;</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;    <span class="keyword">const</span> <span class="keyword">struct </span>sockaddr *local_sa;</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;    <span class="keyword">const</span> <span class="keyword">struct </span>sockaddr *dest_sa;</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;    <span class="keywordtype">void</span>                  *peer_ctx;</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;};</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;</div><div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="lsquic_8h.html#aade9ff8d34cbcb33cd04a41377797fcf">  428</a></span>&#160;<span class="keyword">typedef</span> int (*<a class="code" href="lsquic_8h.html#aade9ff8d34cbcb33cd04a41377797fcf">lsquic_packets_out_f</a>)(</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;    <span class="keywordtype">void</span>                          *packets_out_ctx,</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;    <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlsquic__out__spec.html">lsquic_out_spec</a>  *out_spec,</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;    <span class="keywordtype">unsigned</span>                       n_packets_out</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;);</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="structlsquic__packout__mem__if.html">  443</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structlsquic__packout__mem__if.html">lsquic_packout_mem_if</a></div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;{</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;    <span class="keywordtype">void</span> *  (*pmi_allocate) (<span class="keywordtype">void</span> *pmi_ctx, <span class="keywordtype">size_t</span> sz);</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;    void    (*pmi_release)  (<span class="keywordtype">void</span> *pmi_ctx, <span class="keywordtype">void</span> *obj);</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;};</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;<span class="comment">/* TODO: describe this important data structure */</span></div><div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="structlsquic__engine__api.html">  450</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structlsquic__engine__api.html">lsquic_engine_api</a></div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;{</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;    <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlsquic__engine__settings.html">lsquic_engine_settings</a> *ea_settings;   <span class="comment">/* Optional */</span></div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;    <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlsquic__stream__if.html">lsquic_stream_if</a>       *ea_stream_if;</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;    <span class="keywordtype">void</span>                                *ea_stream_if_ctx;</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;    <a class="code" href="lsquic_8h.html#aade9ff8d34cbcb33cd04a41377797fcf">lsquic_packets_out_f</a>                 ea_packets_out;</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;    <span class="keywordtype">void</span>                                *ea_packets_out_ctx;</div><div class="line"><a name="l00460"></a><span class="lineno"><a class="line" href="structlsquic__engine__api.html#ab1c6af0c63f81cfa0c9ed6d6952b5482">  460</a></span>&#160;    <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlsquic__packout__mem__if.html">lsquic_packout_mem_if</a>  *<a class="code" href="structlsquic__engine__api.html#ab1c6af0c63f81cfa0c9ed6d6952b5482">ea_pmi</a>;</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;    <span class="keywordtype">void</span>                                *ea_pmi_ctx;</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;} <a class="code" href="structlsquic__engine__api.html">lsquic_engine_api_t</a>;</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;<a class="code" href="lsquic_8h.html#afa6f69c943be0a943f28699af6ae1000">lsquic_engine_new</a> (<span class="keywordtype">unsigned</span> lsquic_engine_flags,</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;                   <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlsquic__engine__api.html">lsquic_engine_api</a> *);</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;<a class="code" href="lsquic_8h.html#a5e2335a871f1ab9b66e3c59b442e8cbe">lsquic_engine_connect</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *, <span class="keyword">const</span> <span class="keyword">struct</span> sockaddr *peer_sa,</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;                       <span class="keywordtype">void</span> *peer_ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *hostname,</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;                       <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> max_packet_size);</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;<a class="code" href="lsquic_8h.html#adb3d3d822e9a8217d90acbf29594ae40">lsquic_engine_packet_in</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *,</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *packet_in_data, <span class="keywordtype">size_t</span> packet_in_size,</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;        <span class="keyword">const</span> <span class="keyword">struct</span> sockaddr *sa_local, <span class="keyword">const</span> <span class="keyword">struct</span> sockaddr *sa_peer,</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;        <span class="keywordtype">void</span> *peer_ctx);</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;<a class="code" href="lsquic_8h.html#a60427549acdb608cc360173d817393e3">lsquic_engine_proc_all</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *engine);</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;<a class="code" href="lsquic_8h.html#aefe24851a36ebe16289a6fa3c5a1c8cc">lsquic_engine_process_conns_with_incoming</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *);</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;<a class="code" href="lsquic_8h.html#aefc66717813306c208483cccbb90ab9a">lsquic_engine_process_conns_to_tick</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *);</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;<a class="code" href="lsquic_8h.html#a74d8c8f033c2e654fdb3487a2bf55d8a">lsquic_engine_has_pend_rw</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *);</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;<a class="code" href="lsquic_8h.html#aae156a499af8ae01ca6f4fa307da86c6">lsquic_engine_process_conns_with_pend_rw</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *);</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;</div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;<a class="code" href="lsquic_8h.html#a9d5d9609ca70350117994e2e2e934a22">lsquic_engine_has_unsent_packets</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *engine);</div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;<a class="code" href="lsquic_8h.html#a88a2040cc4b0e575b2fa2affe8597697">lsquic_engine_send_unsent_packets</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *engine);</div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;lsquic_engine_destroy (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *);</div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;</div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;<span class="keywordtype">void</span> lsquic_conn_make_stream(<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *);</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;<span class="keywordtype">unsigned</span></div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;<a class="code" href="lsquic_8h.html#a33bb7961ffad842a052bcd81202de5b9">lsquic_conn_n_pending_streams</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *);</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;<span class="keywordtype">unsigned</span></div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;<a class="code" href="lsquic_8h.html#a8fe1ef20026e5e68a892036005c20a19">lsquic_conn_cancel_pending_streams</a> (<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *, <span class="keywordtype">unsigned</span> n);</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;<a class="code" href="lsquic_8h.html#aff77b794b9ca995245cc9a739b76d197">lsquic_conn_going_away</a>(<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *conn);</div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;</div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;<span class="keywordtype">void</span> <a class="code" href="lsquic_8h.html#ad8f2345e0b9f8d19f7b6a1fa4e970aa8">lsquic_conn_close</a>(<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *conn);</div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;</div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;<span class="keywordtype">int</span> lsquic_stream_wantread(<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <span class="keywordtype">int</span> is_want);</div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;ssize_t lsquic_stream_read(<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;ssize_t lsquic_stream_readv(<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <span class="keyword">const</span> <span class="keyword">struct</span> iovec *,</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;                                                            <span class="keywordtype">int</span> iovcnt);</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;</div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;<span class="keywordtype">int</span> lsquic_stream_wantwrite(<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <span class="keywordtype">int</span> is_want);</div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;ssize_t <a class="code" href="lsquic_8h.html#a1071b7be4f2f28c5fedf957aa6309f9a">lsquic_stream_write</a>(<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <span class="keyword">const</span> <span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;</div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;ssize_t lsquic_stream_writev(<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <span class="keyword">const</span> <span class="keyword">struct</span> iovec *vec, <span class="keywordtype">int</span> count);</div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;</div><div class="line"><a name="l00604"></a><span class="lineno"><a class="line" href="structlsquic__reader.html">  604</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structlsquic__reader.html">lsquic_reader</a></div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;{</div><div class="line"><a name="l00612"></a><span class="lineno"><a class="line" href="structlsquic__reader.html#ae6a68ebf2a1fb77160b0bac599d42790">  612</a></span>&#160;    size_t (*lsqr_read) (<span class="keywordtype">void</span> *lsqr_ctx, <span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> count);</div><div class="line"><a name="l00616"></a><span class="lineno"><a class="line" href="structlsquic__reader.html#aaf6c91ecaf35ca6faa39dde9ea401f17">  616</a></span>&#160;    size_t (*lsqr_size) (<span class="keywordtype">void</span> *lsqr_ctx);</div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;    <span class="keywordtype">void</span>    *lsqr_ctx;</div><div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;};</div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;ssize_t</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;<a class="code" href="lsquic_8h.html#a49f11caabdf3638d3a3217ebdd21c3af">lsquic_stream_writef</a> (<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *, <span class="keyword">struct</span> <a class="code" href="structlsquic__reader.html">lsquic_reader</a> *);</div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;</div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;<a class="code" href="lsquic_8h.html#abcf25d8301c4a2796ea13e6e306a33a9">lsquic_stream_flush</a> (<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s);</div><div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;</div><div class="line"><a name="l00645"></a><span class="lineno"><a class="line" href="structlsquic__http__header.html">  645</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structlsquic__http__header.html">lsquic_http_header</a></div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;{</div><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;   <span class="keyword">struct </span>iovec name;</div><div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;   <span class="keyword">struct </span>iovec value;</div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;} <a class="code" href="lsquic_8h.html#a822627a87eb003fd9e2e56ebded5b3f3">lsquic_http_header_t</a>;</div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;</div><div class="line"><a name="l00656"></a><span class="lineno"><a class="line" href="structlsquic__http__headers.html">  656</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structlsquic__http__headers.html">lsquic_http_headers</a></div><div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;{</div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;    <span class="keywordtype">int</span>                     count;</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;    lsquic_http_header_t   *headers;</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;};</div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;</div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;<span class="keywordtype">int</span> lsquic_stream_send_headers(<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s,</div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;                               <span class="keyword">const</span> <a class="code" href="structlsquic__http__headers.html">lsquic_http_headers_t</a> *h, <span class="keywordtype">int</span> eos);</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;<span class="keywordtype">int</span> lsquic_conn_is_push_enabled(<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c);</div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;</div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;<span class="keywordtype">int</span> <a class="code" href="lsquic_8h.html#a7fee61cc609a4b274a4de2b41db6a9e4">lsquic_stream_shutdown</a>(<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <span class="keywordtype">int</span> how);</div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;</div><div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;<span class="keywordtype">int</span> lsquic_stream_close(<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s);</div><div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;</div><div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;uint32_t</div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;<a class="code" href="lsquic_8h.html#a534523d663336969494d6a3721a63640">lsquic_stream_id</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s);</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;</div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;<a class="code" href="lsquic__types_8h.html#a4012fdeb11382d691dfe5f025206b8f3">lsquic_stream_ctx_t</a> *</div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;<a class="code" href="lsquic_8h.html#a26335cffe38e49a6e87d94967371150d">lsquic_stream_get_ctx</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s);</div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;</div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;<a class="code" href="lsquic_8h.html#a199b551bc87bb77814ab4ce58abcdff9">lsquic_stream_is_pushed</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s);</div><div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;</div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;<a class="code" href="lsquic_8h.html#ada61e01ced7a7db11e5c503409c565be">lsquic_stream_refuse_push</a> (<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s);</div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;</div><div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;<a class="code" href="lsquic_8h.html#ae0b8525f7dac119f6122af564d0e17fd">lsquic_stream_push_info</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *, uint32_t *ref_stream_id,</div><div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;                         <span class="keyword">const</span> <span class="keywordtype">char</span> **headers, <span class="keywordtype">size_t</span> *headers_sz);</div><div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;</div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;<span class="keywordtype">unsigned</span> <a class="code" href="lsquic_8h.html#aa45f5d45b56f5a0d7f881dbccebc5fd8">lsquic_stream_priority</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s);</div><div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;</div><div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;<span class="keywordtype">int</span> <a class="code" href="lsquic_8h.html#aa5e0ddfd53a44561248a286caacbd114">lsquic_stream_set_priority</a> (<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <span class="keywordtype">unsigned</span> priority);</div><div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;</div><div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> * <a class="code" href="lsquic_8h.html#a177184b3d7178dda5a3e95e539230b2b">lsquic_stream_conn</a>(<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s);</div><div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;</div><div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *</div><div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;lsquic_conn_get_stream_by_id (<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c, uint32_t stream_id);</div><div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;</div><div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;<a class="code" href="lsquic__types_8h.html#acf675534bad01d31b48d9113feff1bbb">lsquic_cid_t</a></div><div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;<a class="code" href="lsquic_8h.html#a487bffd57fd7febe4b316be7dc0a3016">lsquic_conn_id</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c);</div><div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;</div><div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;<span class="keywordtype">int</span> lsquic_conn_get_sockaddr(<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c,</div><div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;                <span class="keyword">const</span> <span class="keyword">struct</span> sockaddr **local, <span class="keyword">const</span> <span class="keyword">struct</span> sockaddr **peer);</div><div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;</div><div class="line"><a name="l00740"></a><span class="lineno"><a class="line" href="structlsquic__logger__if.html">  740</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structlsquic__logger__if.html">lsquic_logger_if</a> {</div><div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;    int     (*vprintf)(<span class="keywordtype">void</span> *logger_ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *fmt, va_list args);</div><div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;};</div><div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;</div><div class="line"><a name="l00747"></a><span class="lineno"><a class="line" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235">  747</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235">lsquic_logger_timestamp_style</a> {</div><div class="line"><a name="l00751"></a><span class="lineno"><a class="line" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a4bc180853f0f833b9c93bf7080ce2805">  751</a></span>&#160;    <a class="code" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a4bc180853f0f833b9c93bf7080ce2805">LLTS_NONE</a>,</div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;</div><div class="line"><a name="l00757"></a><span class="lineno"><a class="line" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235aa00368e0a7e30628851ab624d6e7575b">  757</a></span>&#160;    <a class="code" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235aa00368e0a7e30628851ab624d6e7575b">LLTS_HHMMSSMS</a>,</div><div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;</div><div class="line"><a name="l00762"></a><span class="lineno"><a class="line" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a8754c3fced294cfb146625c586a55a56">  762</a></span>&#160;    <a class="code" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a8754c3fced294cfb146625c586a55a56">LLTS_YYYYMMDD_HHMMSSMS</a>,</div><div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;</div><div class="line"><a name="l00772"></a><span class="lineno"><a class="line" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a5aa72ace83b5948f4d5a9ed5c72a4c4b">  772</a></span>&#160;    <a class="code" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a5aa72ace83b5948f4d5a9ed5c72a4c4b">LLTS_CHROMELIKE</a>,</div><div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno"><a class="line" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a874a36df2ce02e162104c2345b176185">  778</a></span>&#160;    <a class="code" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a874a36df2ce02e162104c2345b176185">LLTS_HHMMSSUS</a>,</div><div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;</div><div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;    N_LLTS</div><div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;};</div><div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;</div><div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;<span class="keywordtype">void</span> <a class="code" href="lsquic_8h.html#a5059cabdc84335f56870c8bc7a1235e2">lsquic_logger_init</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlsquic__logger__if.html">lsquic_logger_if</a> *, <span class="keywordtype">void</span> *logger_ctx,</div><div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;                        <span class="keyword">enum</span> <a class="code" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235">lsquic_logger_timestamp_style</a>);</div><div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;</div><div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;<a class="code" href="lsquic_8h.html#a337f6adcc4ec9328e0f293d6128ee376">lsquic_set_log_level</a> (<span class="keyword">const</span> <span class="keywordtype">char</span> *log_level);</div><div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;</div><div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;<a class="code" href="lsquic_8h.html#af8c718a3780425357d070419106e4bc8">lsquic_logger_lopt</a> (<span class="keyword">const</span> <span class="keywordtype">char</span> *optarg);</div><div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;</div><div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;<span class="keywordtype">unsigned</span> <a class="code" href="lsquic_8h.html#abebdca40ce630ad8272752da926d7a24">lsquic_engine_quic_versions</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *);</div><div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;</div><div class="line"><a name="l00816"></a><span class="lineno"><a class="line" href="lsquic_8h.html#add59f38ae0a3bea39bd3c5c86b70c63c">  816</a></span>&#160;<span class="preprocessor">#define LSQUIC_GLOBAL_CLIENT (1 &lt;&lt; 0)</span></div><div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;</div><div class="line"><a name="l00822"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a632ff4c3837f60fae3436db6e5f3e039">  822</a></span>&#160;<span class="preprocessor">#define LSQUIC_GLOBAL_SERVER (1 &lt;&lt; 1)</span></div><div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;</div><div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;<a class="code" href="lsquic_8h.html#a754a3d611e8c6f9a1daeb7b06c00af88">lsquic_global_init</a> (<span class="keywordtype">int</span> flags);</div><div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;</div><div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;<a class="code" href="lsquic_8h.html#a06b9ac9ba933a060b72975640b2d79a3">lsquic_global_cleanup</a> (<span class="keywordtype">void</span>);</div><div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;</div><div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;<span class="keyword">enum</span> <a class="code" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4db">lsquic_version</a></div><div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;<a class="code" href="lsquic_8h.html#a2a07e308beb5e1f29ba62597c2a37b2b">lsquic_conn_quic_version</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c);</div><div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;</div><div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;<span class="keyword">enum</span> <a class="code" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4db">lsquic_version</a></div><div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;<a class="code" href="lsquic_8h.html#a8fef45d333b115d996080bb254077d8d">lsquic_str2ver</a> (<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;</div><div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;<a class="code" href="lsquic__types_8h.html#a21c289bcbb4643effba8bb75eeffd8cd">lsquic_conn_ctx_t</a> *</div><div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;<a class="code" href="lsquic_8h.html#a53d1105503b5ab46384451ff4bbd0391">lsquic_conn_get_ctx</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c);</div><div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;</div><div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;<span class="keywordtype">void</span> *<a class="code" href="lsquic_8h.html#a8edf1874acb10f4b95abf8894023c3c9">lsquic_conn_get_peer_ctx</a>( <span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *lconn);</div><div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;</div><div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;<a class="code" href="lsquic_8h.html#a6da1350d78db9a83810a00dcee3e4944">lsquic_conn_abort</a> (<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c);</div><div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;</div><div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;<a class="code" href="lsquic_8h.html#ac864ff28dcaa1c09ef796a3cdcf83e27">lsquic_engine_earliest_adv_tick</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *engine, <span class="keywordtype">int</span> *diff);</div><div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;</div><div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;<span class="keywordtype">unsigned</span></div><div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;<a class="code" href="lsquic_8h.html#aec59af9ee5cb005bef2e828ee8a0a4be">lsquic_engine_count_attq</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *engine, <span class="keywordtype">int</span> from_now);</div><div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;</div><div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;}</div><div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;</div><div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;<span class="preprocessor">#endif //__LSQUIC_H__</span></div><div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;</div><div class="ttc" id="lsquic_8h_html_a74d8c8f033c2e654fdb3487a2bf55d8a"><div class="ttname"><a href="lsquic_8h.html#a74d8c8f033c2e654fdb3487a2bf55d8a">lsquic_engine_has_pend_rw</a></div><div class="ttdeci">int lsquic_engine_has_pend_rw(lsquic_engine_t *)</div></div>
<div class="ttc" id="lsquic_8h_html_a06b9ac9ba933a060b72975640b2d79a3"><div class="ttname"><a href="lsquic_8h.html#a06b9ac9ba933a060b72975640b2d79a3">lsquic_global_cleanup</a></div><div class="ttdeci">void lsquic_global_cleanup(void)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a7297980e558cd2deafb955534520934b"><div class="ttname"><a href="structlsquic__engine__settings.html#a7297980e558cd2deafb955534520934b">lsquic_engine_settings::es_max_cfcw</a></div><div class="ttdeci">unsigned es_max_cfcw</div><div class="ttdef"><b>Definition:</b> lsquic.h:231</div></div>
<div class="ttc" id="lsquic_8h_html_abebdca40ce630ad8272752da926d7a24"><div class="ttname"><a href="lsquic_8h.html#abebdca40ce630ad8272752da926d7a24">lsquic_engine_quic_versions</a></div><div class="ttdeci">unsigned lsquic_engine_quic_versions(const lsquic_engine_t *)</div></div>
<div class="ttc" id="lsquic_8h_html_ac4584806627d352797a2e0cfae2e6235a4bc180853f0f833b9c93bf7080ce2805"><div class="ttname"><a href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a4bc180853f0f833b9c93bf7080ce2805">LLTS_NONE</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:751</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a578718dc886cffa23e97fa11fb26138b"><div class="ttname"><a href="structlsquic__engine__settings.html#a578718dc886cffa23e97fa11fb26138b">lsquic_engine_settings::es_ua</a></div><div class="ttdeci">const char * es_ua</div><div class="ttdef"><b>Definition:</b> lsquic.h:261</div></div>
<div class="ttc" id="lsquic_8h_html_ac4584806627d352797a2e0cfae2e6235aa00368e0a7e30628851ab624d6e7575b"><div class="ttname"><a href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235aa00368e0a7e30628851ab624d6e7575b">LLTS_HHMMSSMS</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:757</div></div>
<div class="ttc" id="lsquic_8h_html_a88a2040cc4b0e575b2fa2affe8597697"><div class="ttname"><a href="lsquic_8h.html#a88a2040cc4b0e575b2fa2affe8597697">lsquic_engine_send_unsent_packets</a></div><div class="ttdeci">void lsquic_engine_send_unsent_packets(lsquic_engine_t *engine)</div></div>
<div class="ttc" id="lsquic_8h_html_a2633ae9ee8d564f4c499f6eb0913d4dba5c2aa78b22ea462ae839566e19a87ea7"><div class="ttname"><a href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dba5c2aa78b22ea462ae839566e19a87ea7">LSQVER_037</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:54</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a9baca38fb49c0028941a54de17a3580a"><div class="ttname"><a href="structlsquic__engine__settings.html#a9baca38fb49c0028941a54de17a3580a">lsquic_engine_settings::es_pendrw_check</a></div><div class="ttdeci">unsigned es_pendrw_check</div><div class="ttdef"><b>Definition:</b> lsquic.h:344</div></div>
<div class="ttc" id="lsquic_8h_html_ac864ff28dcaa1c09ef796a3cdcf83e27"><div class="ttname"><a href="lsquic_8h.html#ac864ff28dcaa1c09ef796a3cdcf83e27">lsquic_engine_earliest_adv_tick</a></div><div class="ttdeci">int lsquic_engine_earliest_adv_tick(lsquic_engine_t *engine, int *diff)</div></div>
<div class="ttc" id="structlsquic__out__spec_html"><div class="ttname"><a href="structlsquic__out__spec.html">lsquic_out_spec</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:415</div></div>
<div class="ttc" id="lsquic_8h_html_ac4584806627d352797a2e0cfae2e6235a8754c3fced294cfb146625c586a55a56"><div class="ttname"><a href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a8754c3fced294cfb146625c586a55a56">LLTS_YYYYMMDD_HHMMSSMS</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:762</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a1570dc65c3b4d097987f08ade3cfd993"><div class="ttname"><a href="structlsquic__engine__settings.html#a1570dc65c3b4d097987f08ade3cfd993">lsquic_engine_settings::es_support_tcid0</a></div><div class="ttdeci">int es_support_tcid0</div><div class="ttdef"><b>Definition:</b> lsquic.h:293</div></div>
<div class="ttc" id="structlsquic__engine__api_html"><div class="ttname"><a href="structlsquic__engine__api.html">lsquic_engine_api</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:450</div></div>
<div class="ttc" id="lsquic_8h_html_a199b551bc87bb77814ab4ce58abcdff9"><div class="ttname"><a href="lsquic_8h.html#a199b551bc87bb77814ab4ce58abcdff9">lsquic_stream_is_pushed</a></div><div class="ttdeci">int lsquic_stream_is_pushed(const lsquic_stream_t *s)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_aeaef9bb4ecadb340cd05cfb85a6901a5"><div class="ttname"><a href="structlsquic__engine__settings.html#aeaef9bb4ecadb340cd05cfb85a6901a5">lsquic_engine_settings::es_handshake_to</a></div><div class="ttdeci">unsigned long es_handshake_to</div><div class="ttdef"><b>Definition:</b> lsquic.h:245</div></div>
<div class="ttc" id="lsquic_8h_html_a1071b7be4f2f28c5fedf957aa6309f9a"><div class="ttname"><a href="lsquic_8h.html#a1071b7be4f2f28c5fedf957aa6309f9a">lsquic_stream_write</a></div><div class="ttdeci">ssize_t lsquic_stream_write(lsquic_stream_t *s, const void *buf, size_t len)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_ab6848de0e8025b08398ba43445de7405"><div class="ttname"><a href="structlsquic__engine__settings.html#ab6848de0e8025b08398ba43445de7405">lsquic_engine_settings::es_max_streams_in</a></div><div class="ttdeci">unsigned es_max_streams_in</div><div class="ttdef"><b>Definition:</b> lsquic.h:236</div></div>
<div class="ttc" id="lsquic_8h_html_a337f6adcc4ec9328e0f293d6128ee376"><div class="ttname"><a href="lsquic_8h.html#a337f6adcc4ec9328e0f293d6128ee376">lsquic_set_log_level</a></div><div class="ttdeci">int lsquic_set_log_level(const char *log_level)</div></div>
<div class="ttc" id="structlsquic__stream__if_html"><div class="ttname"><a href="structlsquic__stream__if.html">lsquic_stream_if</a></div><div class="ttdoc">The definition of callback functions call by lsquic_stream to process events. </div><div class="ttdef"><b>Definition:</b> lsquic.h:92</div></div>
<div class="ttc" id="lsquic_8h_html_aefe24851a36ebe16289a6fa3c5a1c8cc"><div class="ttname"><a href="lsquic_8h.html#aefe24851a36ebe16289a6fa3c5a1c8cc">lsquic_engine_process_conns_with_incoming</a></div><div class="ttdeci">void lsquic_engine_process_conns_with_incoming(lsquic_engine_t *)</div></div>
<div class="ttc" id="lsquic_8h_html_aec59af9ee5cb005bef2e828ee8a0a4be"><div class="ttname"><a href="lsquic_8h.html#aec59af9ee5cb005bef2e828ee8a0a4be">lsquic_engine_count_attq</a></div><div class="ttdeci">unsigned lsquic_engine_count_attq(lsquic_engine_t *engine, int from_now)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a2931ff6b1bc06429379debcc2c5cc5fa"><div class="ttname"><a href="structlsquic__engine__settings.html#a2931ff6b1bc06429379debcc2c5cc5fa">lsquic_engine_settings::es_cfcw</a></div><div class="ttdeci">unsigned es_cfcw</div><div class="ttdef"><b>Definition:</b> lsquic.h:209</div></div>
<div class="ttc" id="lsquic__types_8h_html_acf675534bad01d31b48d9113feff1bbb"><div class="ttname"><a href="lsquic__types_8h.html#acf675534bad01d31b48d9113feff1bbb">lsquic_cid_t</a></div><div class="ttdeci">uint64_t lsquic_cid_t</div><div class="ttdef"><b>Definition:</b> lsquic_types.h:15</div></div>
<div class="ttc" id="lsquic__types_8h_html"><div class="ttname"><a href="lsquic__types_8h.html">lsquic_types.h</a></div></div>
<div class="ttc" id="lsquic_8h_html_ac4584806627d352797a2e0cfae2e6235a5aa72ace83b5948f4d5a9ed5c72a4c4b"><div class="ttname"><a href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a5aa72ace83b5948f4d5a9ed5c72a4c4b">LLTS_CHROMELIKE</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:772</div></div>
<div class="ttc" id="lsquic_8h_html_a26335cffe38e49a6e87d94967371150d"><div class="ttname"><a href="lsquic_8h.html#a26335cffe38e49a6e87d94967371150d">lsquic_stream_get_ctx</a></div><div class="ttdeci">lsquic_stream_ctx_t * lsquic_stream_get_ctx(const lsquic_stream_t *s)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a9dca1ee29ab43ca9454b6b0a8d5e2799"><div class="ttname"><a href="structlsquic__engine__settings.html#a9dca1ee29ab43ca9454b6b0a8d5e2799">lsquic_engine_settings::es_versions</a></div><div class="ttdeci">unsigned es_versions</div><div class="ttdef"><b>Definition:</b> lsquic.h:197</div></div>
<div class="ttc" id="lsquic_8h_html_a8fe1ef20026e5e68a892036005c20a19"><div class="ttname"><a href="lsquic_8h.html#a8fe1ef20026e5e68a892036005c20a19">lsquic_conn_cancel_pending_streams</a></div><div class="ttdeci">unsigned lsquic_conn_cancel_pending_streams(lsquic_conn_t *, unsigned n)</div></div>
<div class="ttc" id="lsquic_8h_html_ac4584806627d352797a2e0cfae2e6235a874a36df2ce02e162104c2345b176185"><div class="ttname"><a href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a874a36df2ce02e162104c2345b176185">LLTS_HHMMSSUS</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:778</div></div>
<div class="ttc" id="structlsquic__http__header_html"><div class="ttname"><a href="structlsquic__http__header.html">lsquic_http_header</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:645</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a4ba2bd3e85b8b4d0d929e31d675554e2"><div class="ttname"><a href="structlsquic__engine__settings.html#a4ba2bd3e85b8b4d0d929e31d675554e2">lsquic_engine_settings::es_idle_conn_to</a></div><div class="ttdeci">unsigned long es_idle_conn_to</div><div class="ttdef"><b>Definition:</b> lsquic.h:248</div></div>
<div class="ttc" id="structlsquic__reader_html"><div class="ttname"><a href="structlsquic__reader.html">lsquic_reader</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:604</div></div>
<div class="ttc" id="lsquic_8h_html_a8fef45d333b115d996080bb254077d8d"><div class="ttname"><a href="lsquic_8h.html#a8fef45d333b115d996080bb254077d8d">lsquic_str2ver</a></div><div class="ttdeci">enum lsquic_version lsquic_str2ver(const char *str, size_t len)</div></div>
<div class="ttc" id="lsquic__types_8h_html_a7e5d9c467ebef6810d3c5100e4684036"><div class="ttname"><a href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a></div><div class="ttdeci">struct lsquic_conn lsquic_conn_t</div><div class="ttdef"><b>Definition:</b> lsquic_types.h:21</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_addfa7e19884a81f50ca4d573b9aa16a3"><div class="ttname"><a href="structlsquic__engine__settings.html#addfa7e19884a81f50ca4d573b9aa16a3">lsquic_engine_settings::es_support_nstp</a></div><div class="ttdeci">int es_support_nstp</div><div class="ttdef"><b>Definition:</b> lsquic.h:305</div></div>
<div class="ttc" id="lsquic_8h_html_ae0b8525f7dac119f6122af564d0e17fd"><div class="ttname"><a href="lsquic_8h.html#ae0b8525f7dac119f6122af564d0e17fd">lsquic_stream_push_info</a></div><div class="ttdeci">int lsquic_stream_push_info(const lsquic_stream_t *, uint32_t *ref_stream_id, const char **headers, size_t *headers_sz)</div></div>
<div class="ttc" id="lsquic_8h_html_ac4584806627d352797a2e0cfae2e6235"><div class="ttname"><a href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235">lsquic_logger_timestamp_style</a></div><div class="ttdeci">lsquic_logger_timestamp_style</div><div class="ttdef"><b>Definition:</b> lsquic.h:747</div></div>
<div class="ttc" id="lsquic_8h_html_adb3d3d822e9a8217d90acbf29594ae40"><div class="ttname"><a href="lsquic_8h.html#adb3d3d822e9a8217d90acbf29594ae40">lsquic_engine_packet_in</a></div><div class="ttdeci">int lsquic_engine_packet_in(lsquic_engine_t *, const unsigned char *packet_in_data, size_t packet_in_size, const struct sockaddr *sa_local, const struct sockaddr *sa_peer, void *peer_ctx)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_aaa9758b94c763b457c4a6ccc4f1e8100"><div class="ttname"><a href="structlsquic__engine__settings.html#aaa9758b94c763b457c4a6ccc4f1e8100">lsquic_engine_settings::es_proc_time_thresh</a></div><div class="ttdeci">unsigned es_proc_time_thresh</div><div class="ttdef"><b>Definition:</b> lsquic.h:378</div></div>
<div class="ttc" id="lsquic_8h_html_a60427549acdb608cc360173d817393e3"><div class="ttname"><a href="lsquic_8h.html#a60427549acdb608cc360173d817393e3">lsquic_engine_proc_all</a></div><div class="ttdeci">void lsquic_engine_proc_all(lsquic_engine_t *engine)</div></div>
<div class="ttc" id="lsquic_8h_html_aa5e0ddfd53a44561248a286caacbd114"><div class="ttname"><a href="lsquic_8h.html#aa5e0ddfd53a44561248a286caacbd114">lsquic_stream_set_priority</a></div><div class="ttdeci">int lsquic_stream_set_priority(lsquic_stream_t *s, unsigned priority)</div></div>
<div class="ttc" id="lsquic_8h_html_a2633ae9ee8d564f4c499f6eb0913d4dbaa9b8bed8ca169e8a3762308cbf0f3af3"><div class="ttname"><a href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dbaa9b8bed8ca169e8a3762308cbf0f3af3">LSQVER_039</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:67</div></div>
<div class="ttc" id="structlsquic__logger__if_html"><div class="ttname"><a href="structlsquic__logger__if.html">lsquic_logger_if</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:740</div></div>
<div class="ttc" id="lsquic_8h_html_a2633ae9ee8d564f4c499f6eb0913d4dba1956abef5d785f45310599e4fcd39c32"><div class="ttname"><a href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dba1956abef5d785f45310599e4fcd39c32">LSQVER_035</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:46</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_aebf95d077a1a0de005b2ddac5afdfdc4"><div class="ttname"><a href="structlsquic__engine__settings.html#aebf95d077a1a0de005b2ddac5afdfdc4">lsquic_engine_settings::es_silent_close</a></div><div class="ttdeci">int es_silent_close</div><div class="ttdef"><b>Definition:</b> lsquic.h:251</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_ac5a3d759dcdf8915a98cbc3dd56d5f22"><div class="ttname"><a href="structlsquic__engine__settings.html#ac5a3d759dcdf8915a98cbc3dd56d5f22">lsquic_engine_settings::es_honor_prst</a></div><div class="ttdeci">int es_honor_prst</div><div class="ttdef"><b>Definition:</b> lsquic.h:312</div></div>
<div class="ttc" id="lsquic_8h_html_aefc66717813306c208483cccbb90ab9a"><div class="ttname"><a href="lsquic_8h.html#aefc66717813306c208483cccbb90ab9a">lsquic_engine_process_conns_to_tick</a></div><div class="ttdeci">void lsquic_engine_process_conns_to_tick(lsquic_engine_t *)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_ab7b7eb8ab17eb47b8ea69d8ee8ef4a5b"><div class="ttname"><a href="structlsquic__engine__settings.html#ab7b7eb8ab17eb47b8ea69d8ee8ef4a5b">lsquic_engine_settings::es_max_header_list_size</a></div><div class="ttdeci">unsigned es_max_header_list_size</div><div class="ttdef"><b>Definition:</b> lsquic.h:258</div></div>
<div class="ttc" id="lsquic_8h_html_a827d6567e492bd67c330e2d48047ad49"><div class="ttname"><a href="lsquic_8h.html#a827d6567e492bd67c330e2d48047ad49">lsquic_engine_check_settings</a></div><div class="ttdeci">int lsquic_engine_check_settings(const struct lsquic_engine_settings *settings, unsigned lsquic_engine_flags, char *err_buf, size_t err_buf_sz)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a59907a4c1080bd6eb5c5c7776b968af4"><div class="ttname"><a href="structlsquic__engine__settings.html#a59907a4c1080bd6eb5c5c7776b968af4">lsquic_engine_settings::es_rw_once</a></div><div class="ttdeci">int es_rw_once</div><div class="ttdef"><b>Definition:</b> lsquic.h:358</div></div>
<div class="ttc" id="lsquic_8h_html_a2633ae9ee8d564f4c499f6eb0913d4db"><div class="ttname"><a href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4db">lsquic_version</a></div><div class="ttdeci">lsquic_version</div><div class="ttdef"><b>Definition:</b> lsquic.h:42</div></div>
<div class="ttc" id="lsquic_8h_html_a754a3d611e8c6f9a1daeb7b06c00af88"><div class="ttname"><a href="lsquic_8h.html#a754a3d611e8c6f9a1daeb7b06c00af88">lsquic_global_init</a></div><div class="ttdeci">int lsquic_global_init(int flags)</div></div>
<div class="ttc" id="lsquic_8h_html_a5e2335a871f1ab9b66e3c59b442e8cbe"><div class="ttname"><a href="lsquic_8h.html#a5e2335a871f1ab9b66e3c59b442e8cbe">lsquic_engine_connect</a></div><div class="ttdeci">int lsquic_engine_connect(lsquic_engine_t *, const struct sockaddr *peer_sa, void *peer_ctx, const char *hostname, unsigned short max_packet_size)</div></div>
<div class="ttc" id="lsquic__types_8h_html_a41d83b8270d6f12d2812203a7614b55f"><div class="ttname"><a href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a></div><div class="ttdeci">struct lsquic_engine lsquic_engine_t</div><div class="ttdef"><b>Definition:</b> lsquic_types.h:18</div></div>
<div class="ttc" id="lsquic_8h_html_ada61e01ced7a7db11e5c503409c565be"><div class="ttname"><a href="lsquic_8h.html#ada61e01ced7a7db11e5c503409c565be">lsquic_stream_refuse_push</a></div><div class="ttdeci">int lsquic_stream_refuse_push(lsquic_stream_t *s)</div></div>
<div class="ttc" id="structlsquic__packout__mem__if_html"><div class="ttname"><a href="structlsquic__packout__mem__if.html">lsquic_packout_mem_if</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:443</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_adfd0c61d3243d85d3676876ca67e6466"><div class="ttname"><a href="structlsquic__engine__settings.html#adfd0c61d3243d85d3676876ca67e6466">lsquic_engine_settings::es_support_srej</a></div><div class="ttdeci">int es_support_srej</div><div class="ttdef"><b>Definition:</b> lsquic.h:272</div></div>
<div class="ttc" id="lsquic_8h_html_a53d1105503b5ab46384451ff4bbd0391"><div class="ttname"><a href="lsquic_8h.html#a53d1105503b5ab46384451ff4bbd0391">lsquic_conn_get_ctx</a></div><div class="ttdeci">lsquic_conn_ctx_t * lsquic_conn_get_ctx(const lsquic_conn_t *c)</div></div>
<div class="ttc" id="lsquic_8h_html_a5059cabdc84335f56870c8bc7a1235e2"><div class="ttname"><a href="lsquic_8h.html#a5059cabdc84335f56870c8bc7a1235e2">lsquic_logger_init</a></div><div class="ttdeci">void lsquic_logger_init(const struct lsquic_logger_if *, void *logger_ctx, enum lsquic_logger_timestamp_style)</div></div>
<div class="ttc" id="lsquic_8h_html_aade9ff8d34cbcb33cd04a41377797fcf"><div class="ttname"><a href="lsquic_8h.html#aade9ff8d34cbcb33cd04a41377797fcf">lsquic_packets_out_f</a></div><div class="ttdeci">int(* lsquic_packets_out_f)(void *packets_out_ctx, const struct lsquic_out_spec *out_spec, unsigned n_packets_out)</div><div class="ttdef"><b>Definition:</b> lsquic.h:428</div></div>
<div class="ttc" id="lsquic_8h_html_a49f11caabdf3638d3a3217ebdd21c3af"><div class="ttname"><a href="lsquic_8h.html#a49f11caabdf3638d3a3217ebdd21c3af">lsquic_stream_writef</a></div><div class="ttdeci">ssize_t lsquic_stream_writef(lsquic_stream_t *, struct lsquic_reader *)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_ac88c5a68eac5f324a1b1524a962be26d"><div class="ttname"><a href="structlsquic__engine__settings.html#ac88c5a68eac5f324a1b1524a962be26d">lsquic_engine_settings::es_sfcw</a></div><div class="ttdeci">unsigned es_sfcw</div><div class="ttdef"><b>Definition:</b> lsquic.h:221</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a90403ce7cbb10f9ddf438cfc1bd62530"><div class="ttname"><a href="structlsquic__engine__settings.html#a90403ce7cbb10f9ddf438cfc1bd62530">lsquic_engine_settings::es_pace_packets</a></div><div class="ttdeci">int es_pace_packets</div><div class="ttdef"><b>Definition:</b> lsquic.h:385</div></div>
<div class="ttc" id="lsquic_8h_html_a7fee61cc609a4b274a4de2b41db6a9e4"><div class="ttname"><a href="lsquic_8h.html#a7fee61cc609a4b274a4de2b41db6a9e4">lsquic_stream_shutdown</a></div><div class="ttdeci">int lsquic_stream_shutdown(lsquic_stream_t *s, int how)</div></div>
<div class="ttc" id="lsquic_8h_html_afa6f69c943be0a943f28699af6ae1000"><div class="ttname"><a href="lsquic_8h.html#afa6f69c943be0a943f28699af6ae1000">lsquic_engine_new</a></div><div class="ttdeci">lsquic_engine_t * lsquic_engine_new(unsigned lsquic_engine_flags, const struct lsquic_engine_api *)</div></div>
<div class="ttc" id="lsquic_8h_html_abcf25d8301c4a2796ea13e6e306a33a9"><div class="ttname"><a href="lsquic_8h.html#abcf25d8301c4a2796ea13e6e306a33a9">lsquic_stream_flush</a></div><div class="ttdeci">int lsquic_stream_flush(lsquic_stream_t *s)</div></div>
<div class="ttc" id="lsquic_8h_html_a487bffd57fd7febe4b316be7dc0a3016"><div class="ttname"><a href="lsquic_8h.html#a487bffd57fd7febe4b316be7dc0a3016">lsquic_conn_id</a></div><div class="ttdeci">lsquic_cid_t lsquic_conn_id(const lsquic_conn_t *c)</div></div>
<div class="ttc" id="structlsquic__http__headers_html"><div class="ttname"><a href="structlsquic__http__headers.html">lsquic_http_headers</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:656</div></div>
<div class="ttc" id="lsquic_8h_html_a8edf1874acb10f4b95abf8894023c3c9"><div class="ttname"><a href="lsquic_8h.html#a8edf1874acb10f4b95abf8894023c3c9">lsquic_conn_get_peer_ctx</a></div><div class="ttdeci">void * lsquic_conn_get_peer_ctx(const lsquic_conn_t *lconn)</div></div>
<div class="ttc" id="lsquic_8h_html_aa45f5d45b56f5a0d7f881dbccebc5fd8"><div class="ttname"><a href="lsquic_8h.html#aa45f5d45b56f5a0d7f881dbccebc5fd8">lsquic_stream_priority</a></div><div class="ttdeci">unsigned lsquic_stream_priority(const lsquic_stream_t *s)</div></div>
<div class="ttc" id="lsquic_8h_html_a822627a87eb003fd9e2e56ebded5b3f3"><div class="ttname"><a href="lsquic_8h.html#a822627a87eb003fd9e2e56ebded5b3f3">lsquic_http_header_t</a></div><div class="ttdeci">struct lsquic_http_header lsquic_http_header_t</div><div class="ttdoc">HTTP header structure. Contains header name and value. </div></div>
<div class="ttc" id="lsquic_8h_html_af8c718a3780425357d070419106e4bc8"><div class="ttname"><a href="lsquic_8h.html#af8c718a3780425357d070419106e4bc8">lsquic_logger_lopt</a></div><div class="ttdeci">int lsquic_logger_lopt(const char *optarg)</div></div>
<div class="ttc" id="structlsquic__engine__api_html_ab1c6af0c63f81cfa0c9ed6d6952b5482"><div class="ttname"><a href="structlsquic__engine__api.html#ab1c6af0c63f81cfa0c9ed6d6952b5482">lsquic_engine_api::ea_pmi</a></div><div class="ttdeci">const struct lsquic_packout_mem_if * ea_pmi</div><div class="ttdef"><b>Definition:</b> lsquic.h:460</div></div>
<div class="ttc" id="lsquic__types_8h_html_a21c289bcbb4643effba8bb75eeffd8cd"><div class="ttname"><a href="lsquic__types_8h.html#a21c289bcbb4643effba8bb75eeffd8cd">lsquic_conn_ctx_t</a></div><div class="ttdeci">struct lsquic_conn_ctx lsquic_conn_ctx_t</div><div class="ttdef"><b>Definition:</b> lsquic_types.h:24</div></div>
<div class="ttc" id="lsquic__types_8h_html_a4012fdeb11382d691dfe5f025206b8f3"><div class="ttname"><a href="lsquic__types_8h.html#a4012fdeb11382d691dfe5f025206b8f3">lsquic_stream_ctx_t</a></div><div class="ttdeci">struct lsquic_stream_ctx lsquic_stream_ctx_t</div><div class="ttdef"><b>Definition:</b> lsquic_types.h:30</div></div>
<div class="ttc" id="lsquic_8h_html_aae156a499af8ae01ca6f4fa307da86c6"><div class="ttname"><a href="lsquic_8h.html#aae156a499af8ae01ca6f4fa307da86c6">lsquic_engine_process_conns_with_pend_rw</a></div><div class="ttdeci">void lsquic_engine_process_conns_with_pend_rw(lsquic_engine_t *)</div></div>
<div class="ttc" id="lsquic__types_8h_html_ad286bcdd799bb3733f1d6568e25c57c6"><div class="ttname"><a href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a></div><div class="ttdeci">struct lsquic_stream lsquic_stream_t</div><div class="ttdef"><b>Definition:</b> lsquic_types.h:27</div></div>
<div class="ttc" id="lsquic_8h_html_a177184b3d7178dda5a3e95e539230b2b"><div class="ttname"><a href="lsquic_8h.html#a177184b3d7178dda5a3e95e539230b2b">lsquic_stream_conn</a></div><div class="ttdeci">lsquic_conn_t * lsquic_stream_conn(const lsquic_stream_t *s)</div></div>
<div class="ttc" id="lsquic_8h_html_a9d5d9609ca70350117994e2e2e934a22"><div class="ttname"><a href="lsquic_8h.html#a9d5d9609ca70350117994e2e2e934a22">lsquic_engine_has_unsent_packets</a></div><div class="ttdeci">int lsquic_engine_has_unsent_packets(lsquic_engine_t *engine)</div></div>
<div class="ttc" id="lsquic_8h_html_aff77b794b9ca995245cc9a739b76d197"><div class="ttname"><a href="lsquic_8h.html#aff77b794b9ca995245cc9a739b76d197">lsquic_conn_going_away</a></div><div class="ttdeci">void lsquic_conn_going_away(lsquic_conn_t *conn)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html"><div class="ttname"><a href="structlsquic__engine__settings.html">lsquic_engine_settings</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:188</div></div>
<div class="ttc" id="lsquic_8h_html_a2a07e308beb5e1f29ba62597c2a37b2b"><div class="ttname"><a href="lsquic_8h.html#a2a07e308beb5e1f29ba62597c2a37b2b">lsquic_conn_quic_version</a></div><div class="ttdeci">enum lsquic_version lsquic_conn_quic_version(const lsquic_conn_t *c)</div></div>
<div class="ttc" id="lsquic_8h_html_ad8f2345e0b9f8d19f7b6a1fa4e970aa8"><div class="ttname"><a href="lsquic_8h.html#ad8f2345e0b9f8d19f7b6a1fa4e970aa8">lsquic_conn_close</a></div><div class="ttdeci">void lsquic_conn_close(lsquic_conn_t *conn)</div></div>
<div class="ttc" id="lsquic_8h_html_a2633ae9ee8d564f4c499f6eb0913d4dba2d39809298e0c7866b21fc7932504966"><div class="ttname"><a href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dba2d39809298e0c7866b21fc7932504966">LSQVER_038</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:60</div></div>
<div class="ttc" id="lsquic_8h_html_a534523d663336969494d6a3721a63640"><div class="ttname"><a href="lsquic_8h.html#a534523d663336969494d6a3721a63640">lsquic_stream_id</a></div><div class="ttdeci">uint32_t lsquic_stream_id(const lsquic_stream_t *s)</div></div>
<div class="ttc" id="structlsquic__stream__if_html_afdab3bce65931517452d2ddd979596d7"><div class="ttname"><a href="structlsquic__stream__if.html#afdab3bce65931517452d2ddd979596d7">lsquic_stream_if::on_goaway_received</a></div><div class="ttdeci">void(* on_goaway_received)(lsquic_conn_t *c)</div><div class="ttdef"><b>Definition:</b> lsquic.h:104</div></div>
<div class="ttc" id="lsquic_8h_html_a2633ae9ee8d564f4c499f6eb0913d4dbac673a00564784af03b3b9cb747ed8af3"><div class="ttname"><a href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dbac673a00564784af03b3b9cb747ed8af3">LSQVER_041</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:72</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a85a83ab74a018c293f83d9b78a797d8e"><div class="ttname"><a href="structlsquic__engine__settings.html#a85a83ab74a018c293f83d9b78a797d8e">lsquic_engine_settings::es_progress_check</a></div><div class="ttdeci">unsigned es_progress_check</div><div class="ttdef"><b>Definition:</b> lsquic.h:327</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a8b68eb068b40eb24e5e08cab097f077a"><div class="ttname"><a href="structlsquic__engine__settings.html#a8b68eb068b40eb24e5e08cab097f077a">lsquic_engine_settings::es_support_push</a></div><div class="ttdeci">int es_support_push</div><div class="ttdef"><b>Definition:</b> lsquic.h:284</div></div>
<div class="ttc" id="lsquic_8h_html_a33bb7961ffad842a052bcd81202de5b9"><div class="ttname"><a href="lsquic_8h.html#a33bb7961ffad842a052bcd81202de5b9">lsquic_conn_n_pending_streams</a></div><div class="ttdeci">unsigned lsquic_conn_n_pending_streams(const lsquic_conn_t *)</div></div>
<div class="ttc" id="lsquic_8h_html_a6da1350d78db9a83810a00dcee3e4944"><div class="ttname"><a href="lsquic_8h.html#a6da1350d78db9a83810a00dcee3e4944">lsquic_conn_abort</a></div><div class="ttdeci">void lsquic_conn_abort(lsquic_conn_t *c)</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
